<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="en">
  <head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="created" content="2018-10-23T06:18:10.521000000">
    <meta name="changed" content="2018-10-23T06:18:42.262000000">
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <meta http-equiv="Content-Language" content="en">
    <title>
      disassembler
    </title>
    <link rel="stylesheet" type="text/css" href="../../style.css">
  </head>
  <body>
    <div class="maindiv">
      <h1>
        Disassembler
      </h1>
      <p>
        <img class="iconlibs" src="../../../../img-libs/disassembler.png" alt="disassembler" title="disassembler"><br>
      </p>
      <p>
        The disassembler takes the program stored in memory and transforms it to a human readable contents. If available the disassembler uses the elf section headers to extract defined labels and sections. Otherwise it uses directly the information stored in memory to decode the information. The disassembler has some features that are described below.
      </p>
      <h2>
        Automatic label detection
      </h2>
      <p>
        Where possible the disassembler tries to automatically detect labels in your program. The detected labels will be called <em><strong>logisim_label_&lt;x&gt;</strong>&nbsp;</em> where <strong>&lt;x&gt;</strong> is a number starting with 1. The labels are ordered from top to bottom, such that searching for a label is facilitated.
      </p>
      <h2>
        Automatic program counter and opcode insertion
      </h2>
      <p>
        After each line where an instruction is detected the disassembler will insert a remark containing the program counter (pc) value and the instruction's binary opcode.
      </p>
      <h2>
        Break point support
      </h2>
      <p>
        The disassembler supports breakpoints. Breakpoints can be set/cleared by either clicking in the left vertical bar next to the instruction, or by selecting a line and pressing the <strong>b</strong> or clicking on either the button <em>Add break point</em> or <em>Remove break point</em>.
      </p>
      <p>
        The moment the cpu reaches a break point it will stop executing and the <a href="socsimcontrol.html">simulation state controller</a> will indicate a break point reached. The instruction next to the break point will not be executed. Finally upon reaching a break point the disassembler will automatically jump to the line at which the break point is encountered.<br>
      </p>
    </div>
  </body>
</html>
